package middleware

import (
	"restaurant-system/config"
	"restaurant-system/internal/models"

	"github.com/gin-gonic/gin"
)

// AdminMiddleware 验证用户是否为管理员
func AdminMiddleware() gin.HandlerFunc {
	return func(c *gin.Context) {
		// 从上下文中获取用户ID
		userID, exists := c.Get("userID")
		if !exists {
			c.JSON(401, gin.H{"error": "未登录"})
			c.Abort()
			return
		}

		// 查询用户信息
		var user models.User
		if err := config.DB.First(&user, userID).Error; err != nil {
			c.JSON(401, gin.H{"error": "用户不存在"})
			c.Abort()
			return
		}

		// 检查用户是否为管理员
		if user.Role != "admin" {
			c.JSON(403, gin.H{"error": "无权限访问"})
			c.Abort()
			return
		}

		// 将用户信息存入上下文
		c.Set("user", user)
		c.Next()
	}
}
